package acciones;

import islenio.IslenioEntornoEstado;
import islenio.IslenioEstado;
import utilidades.Aldea;
import utilidades.Camino;
import frsf.cidisi.faia.agent.search.SearchAction;
import frsf.cidisi.faia.agent.search.SearchBasedAgentState;
import frsf.cidisi.faia.state.AgentState;
import frsf.cidisi.faia.state.EnvironmentState;

public class IrAragaey extends SearchAction {
	 public SearchBasedAgentState execute(SearchBasedAgentState s) {

		 IslenioEstado agentState = (IslenioEstado) s;

	        if(Aldea.contiene(agentState.aldeasRecorridas,agentState.Aragaey)||agentState.Aragaey == null) return null;
	        else{
	        	
	        	System.out.println(agentState.aldeasRecorridas.size());
	        }
	        
	        if(Camino.hayCamino(agentState.getAldeaActual(),agentState.Aragaey,agentState.listaCaminos)){	
	        	agentState.actualizarDistanciaRecorrida(agentState.Aragaey);
	        	agentState.setAldeaActual(agentState.Aragaey);
	        	
	       		return agentState;
	       	}
	        
	        return null;
	    }

	    public EnvironmentState execute(AgentState ast, EnvironmentState est) {
	        IslenioEstado agentState = (IslenioEstado) ast;
	        IslenioEntornoEstado environmentState = (IslenioEntornoEstado) est; 

	        if(Aldea.contiene(IslenioEntornoEstado.aldeasRecorridas,agentState.Aragaey) || agentState == null || agentState.Aragaey == null) return null;
	        if(Camino.hayCamino(agentState.getAldeaActual(),agentState.Aragaey,agentState.listaCaminos)){	
        		agentState.actualizarDistanciaRecorrida(agentState.Aragaey);
        		agentState.setAldeaActual(agentState.Aragaey);
        		environmentState.setAldeaActual(IslenioEntornoEstado.Aragaey);
        		return environmentState;
	                
            }
	        
	        return null;
	        
	    }

	    public Double getCost() {
	        return new Double(0);
	    }

	    public String toString() {
	        return "IrAragaey";
	    }
}
